python+appium自动化测试

您所在的位置:网站首页 Python appium执行清楚数据 python+appium自动化测试

python+appium自动化测试

#python+appium自动化测试| 来源: 网络整理| 查看: 265

这篇文章总结了我平时用的比较多的3个设置,后续有用到其它的,会继续更新哦。

一、运行时会重装APP问题

问题:在使用Appium运行自动化代码的时候,每次运行会自动清除APP的原来数据,并将APP卸载,再重新安装打开。

解决:在APP启动的参数设置中添加"noReset": True,表示启动APP时不清除APP里的原有的数据。未设置该参数,系统默认为"noReset": False,表示在启动APP时会自动清除卸载APP,重新安装,所以每次打开的APP都是新安装的APP。

代码示例:

from appium import webdriver def start(self): caps = {"platformName": "Android", "deviceName": "ABCDEFGHIJKLMNOPQ", "platforVersion": "9", "appPackage": "com.sina.weibo", "appActivity": "com.sina.weibo.SplashActivity", "autoGrantPermissions": "true", "automationName": "UiAutomator2", # 启动app时不要清除app里的原有的数据 "noReset": True } self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps) self.driver.implicitly_wait(20) 二、执行测试用例会重启APP

问题:执行多条测试用例时,每执行完一个测试用例,都会重新启动AP

解决:在测试用例类中导入pytest,将测试用例类中的初始化函数设置为setup_class,修改后启动APP,只会执行一次初始化。

setup_class(self):这是一个class级别的setup函数,它会在这个测试类TestAccountLogin里所有test执行之前,被调用一次。

teardown_class(self):这是一个class级别的teardown函数,他会在这个测试类TestAccountLogin里所有test执行之后,被调用一次。

代码示例:

import pytest from common.init import AppStart class TestAccountLogin: def setup_class(self): self.accountloginpage = AppStart.start() def teardown_class(self): AppStart.quit() 三、自定义测试用例执行顺序

问题:默认情况下,pytest框架的测试用例执行顺序是按照字母的顺序执行的,如何自定义设置测试用例的执行顺序?

解决:有两种解决方法,分别为:

1.使用函数修饰符的方式来标记被测试函数执行的顺序,插件名称为pytest-ordering

2.将测试用例命名为数字

方法一:使用函数修饰符的方式来标记被测试函数执行的顺序

1.需要先安装插件pytest-ordering

安装包安装:python setup.py install 命令行安装:pip3 install pytest-ordering

插件安装成功如下图所示

2.使用方法

标记于被测试函数,@pytest.mark.run(order=x) 根据order传入的参数来解决运行问题 order值全为正数或全为负数时,值越小,优先级越高 正数和负数同时存在时,正数优先级高

如下所示:

import pytest from common.init import AppStart class TestAccountLogin: def setup_class(self): self.accountloginpage = AppStart.start() @pytest.mark.run(order=-1) def test_account(self): print("01") @pytest.mark.run(order=2) def test_pwd(self): print("02") @pytest.mark.run(order=3) def test_phone(self): print("03") def teardown_class(self): AppStart.quit()

以上会按照test_pwd→test_phone→test_account的顺序执行

方法二:将测试用例的函数名命名为数字,即会按照数字由小到大的顺序执行

如下所示:

import pytest from common.init import AppStart class TestAccountLogin: def setup_class(self): self.accountloginpage = AppStart.start() @pytest.mark.run(order=-1) def test_01(self): print("01") @pytest.mark.run(order=2) def test_02(self): print("02") @pytest.mark.run(order=3) def test_03(self): print("03") def teardown_class(self): AppStart.quit()

会按照01→02→03的顺序执行

以上内容有错误的地方,大家多多指正,谢谢!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3